﻿
// PE_StudioDlg.h: 头文件
//

#pragma once
#include "afxdialogex.h"
#include "PE.h"
#include "DlgDosHeader.h"
#include "DlgNtHeader.h"
#include "DlgDataDir.h"
#include "DlgSection.h"
#include "DlgRvaRaw.h"
#include "DlgProcess.h"

enum CUR_SEL_TAB
{
	DLG_DOSHEADER = 0,
    DLG_NTHEADER,	
	DLG_DATADIR,
	DLG_SECTION,
	DLG_PROCESS,
    DLG_SET,
    COUNTS
};

// CPEStudioDlg 对话框
class CPEStudioDlg : public CDialogEx
{
// 构造
public:
	CPEStudioDlg(CWnd* pParent = nullptr);				// 标准构造函数

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_MAIN };
#endif

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void CloseApp();
	afx_msg void OnAbout();
    afx_msg void OnTcnSelchangePetab(NMHDR* pNMHDR, LRESULT* pResult);	//Tab控件选中切换
    afx_msg void OpenFile();											//打开文件获取文件路径
    afx_msg void OnDropFiles(HDROP hDropInfo);							//拖放文件获取文件路径

    afx_msg void OnBnClickedBtntest();
    afx_msg void OnBnClickedBtnrvaraw();
	DECLARE_MESSAGE_MAP()
private:
	CTabCtrl		m_tab { };						// Tab控件
	DlgPeHeader		m_peHeader { };					// PEHeader窗口
	DlgPeDos		m_PeDos { };					// PEDos窗口
	DlgSection		m_Section { };					// 区段窗口
	DlgDataDir		m_DataDir { };					// 数据目录表窗口
	DlgRvaRaw		m_RvaRaw { };					// RVARAW转换器窗口

    
	CDialogEx* pDialog[COUNTS]{ };					// 用来保存对话框对象指针    
	int				m_CurSelTab;					// 当前选中标签
	TCHAR			m_szFilePath[MAX_PATH];			// 文件路径
	
public:
	DlgProcess		m_Process{ };					// 进程窗口
	PE* m_pPE{ };									// PE类实例化

public:
	HACCEL m_hAccel;								// 菜单加速键
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	BOOL InitPE(TCHAR* szFilePath);					// 初始化PE类相关信息
    BOOL InitControl();								// 初始化控件
	BOOL ShowDosHeaderInfo();
    BOOL ShowFileHeaderInfo();
    BOOL ShowOptionHeaderInfo();
	BOOL ShowDataDirInfo();
    BOOL ShowSectionInfo();

};